/**
 * @filename:JobService 2022-9-28
 * @project Wonder Java前后台分离框架  1.1.0
 * Copyright(c) 2022 Wonder Co. Ltd. 
 * All right reserved. 
 */
package com.wonder.admin.service;

import com.wonder.admin.domain.Job;
import com.wonder.admin.request.JobRequest;
import com.wonder.common.exception.job.TaskException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;

import org.quartz.SchedulerException;
/**   
 * @Description:TODO(任务管理服务层)
 * @version: 1.1.0
 * @author: Wonder
 * 
 */
public interface JobService extends IService<Job> {

    
    /**
     * 验证任务管理信息
     * 
     * @param Job信息
     * @return 结果
     */
    public String validate(Job job,String type);
    
	 /**
	 * Description:任务管理分页返回
	 * @request:检索条件
	 * @page：分页参数
	 * @return:分页记录
	 */
    public IPage<Job> selectList(JobRequest request, Page<Job> page);

	/**
	 * 校验cron表达式是否有效
	 * 
	 * @param cronExpression 表达式
	 * @return 结果
	 */
	boolean checkCronExpressionIsValid(String cronExpression);

	/**
	 * 更新任务的时间表达式
	 * 
	 * @param job 调度信息
	 */
	int updateJob(Job job) throws SchedulerException, TaskException;

	/**
	 * 新增任务
	 * 
	 * @param job 调度信息 调度信息
	 */
	int insertJob(Job job) throws SchedulerException, TaskException;

	/**
	 * 立即运行任务
	 * 
	 * @param job 调度信息
	 * @throws TaskException 
	 */
	void run(Job job) throws SchedulerException, TaskException;

	/**
	 * 任务调度状态修改
	 * 
	 * @param job 调度信息
	 */
	boolean changeStatus(Job job) throws SchedulerException;

	/**
	 * 删除任务后，所对应的trigger也将被删除
	 * 
	 * @param job 调度信息
	 */
	boolean deleteJob(Job job) throws SchedulerException;

	/**
	 * 恢复任务
	 * 
	 * @param job 调度信息
	 */
	boolean resumeJob(Job job) throws SchedulerException;

	/**
	 * 暂停任务
	 * 
	 * @param job 调度信息
	 */
	boolean pauseJob(Job job) throws SchedulerException;

	/**
	 * 批量删除调度信息
	 * 
	 * @param ids 需要删除的数据ID
	 * @return 结果
	 */
	void deleteJobByIds(String ids) throws SchedulerException;

	
    
	
}